﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Diagnostics.CodeAnalysis;

namespace LotroData
{
    /// <summary>
    /// Defines the different LoTRO worlds (servers).
    /// </summary>
    public enum LotroWorld
    {
        /// <summary>
        /// An unknown world.
        /// </summary>
        Unknown,
        /// <summary>
        /// The Arkenstone world.
        /// </summary>
        Arkenstone,
        /// <summary>
        /// The Brandywine world.
        /// </summary>
        Brandywine,
        /// <summary>
        /// The Elendilmir world.
        /// </summary>
        Elendilmir,
        /// <summary>
        /// The Firefoot world.
        /// </summary>
        Firefoot,
        /// <summary>
        /// The Gladden world.
        /// </summary>
        Gladden,
        /// <summary>
        /// The Landroval world.
        /// </summary>
        Landroval,
        /// <summary>
        /// The Meneldor world.
        /// </summary>
        Meneldor,
        /// <summary>
        /// The Nimrodel world.
        /// </summary>
        Nimrodel,
        /// <summary>
        /// The Silverlode world.
        /// </summary>
        Silverlode,
        /// <summary>
        /// The Vilya world.
        /// </summary>
        Vilya,
        /// <summary>
        /// The Windfola world.
        /// </summary>
        Windfola
    }

    /// <summary>
    /// Defines the different LoTRO character classes.
    /// </summary>
    public enum LotroClass
    {
        /// <summary>
        /// An unknown class.
        /// </summary>
        Unknown,
        /// <summary>
        /// The Champion class.
        /// </summary>
        [LotroFreeCharacter]
        Champion,
        /// <summary>
        /// The Rune-keeper class.
        /// </summary>
        [StringValue("Rune-keeper")]
        [LotroFreeCharacter]
        Runekeeper,
        /// <summary>
        /// The Minstrel class.
        /// </summary>
        [LotroFreeCharacter]
        Minstrel,
        /// <summary>
        /// The Captain class.
        /// </summary>
        [LotroFreeCharacter]
        Captain,
        /// <summary>
        /// The Guardian class.
        /// </summary>
        [LotroFreeCharacter]
        Guardian,
        /// <summary>
        /// The Lore-master class.
        /// </summary>
        [StringValue("Lore-master")]
        [LotroFreeCharacter]
        Loremaster,
        /// <summary>
        /// The Hunter class.
        /// </summary>
        [LotroFreeCharacter]
        Hunter,
        /// <summary>
        /// The Burglar class.
        /// </summary>
        [LotroFreeCharacter]
        Burglar,
        /// <summary>
        /// The Warden class.
        /// </summary>
        [LotroFreeCharacter]
        Warden,
        /// <summary>
        /// The Warleader class.
        /// </summary>
        Warleader,
        /// <summary>
        /// The Reaver class.
        /// </summary>
        Reaver,
        /// <summary>
        /// The Blackarrow class.
        /// </summary>
        Blackarrow,
        /// <summary>
        /// The Weaver class.
        /// </summary>
        Weaver,
        /// <summary>
        /// The Stalker class.
        /// </summary>
        Stalker,
        /// <summary>
        /// The Defiler class.
        /// </summary>
        Defiler
    }

    /// <summary>
    /// Defines the different LoTRO character races.
    /// </summary>
    public enum LotroRace
    {
        /// <summary>
        /// An unknown race.
        /// </summary>
        Unknown,
        /// <summary>
        /// The Elf race.
        /// </summary>
        Elf,
        /// <summary>
        /// The Hobbit race.
        /// </summary>
        Hobbit,
        /// <summary>
        /// The Race of Man.
        /// </summary>
        [StringValue("Race of Man")]
        RaceofMan,
        /// <summary>
        /// The Dwarf race.
        /// </summary>
        Dwarf,
        /// <summary>
        /// The Uruk race.
        /// </summary>
        Uruk,
        /// <summary>
        /// The Orc race.
        /// </summary>
        Orc,
        /// <summary>
        /// The Spider race.
        /// </summary>
        Spider,
        /// <summary>
        /// The Warg race.
        /// </summary>
        Warg
    }

    /// <summary>
    /// Defines the different vocations a LoTRO character may have.
    /// </summary>
    public enum LotroVocation
    {
        /// <summary>
        /// An unknown vocation.
        /// </summary>
        Unknown,
        /// <summary>
        /// The Armsman vocation.
        /// </summary>
        Armsman,
        /// <summary>
        /// The Armourer vocation.
        /// </summary>
        Armourer,
        /// <summary>
        /// The Explorer vocation.
        /// </summary>
        Explorer,
        /// <summary>
        /// The Historian vocation.
        /// </summary>
        Historian,
        /// <summary>
        /// The Tinker vocation.
        /// </summary>
        Tinker,
        /// <summary>
        /// The Woodsman vocation.
        /// </summary>
        Woodsman,
        /// <summary>
        /// The Yeoman vocation.
        /// </summary>
        Yeoman
    }

    /// <summary>
    /// Defines the different professions a LoTRO character may have.
    /// </summary>
    public enum LotroProfession
    {
        /// <summary>
        /// An unknown profession.
        /// </summary>
        Unknown,
        /// <summary>
        /// The Cook profession.
        /// </summary>
        Cook,
        /// <summary>
        /// The Farmer profession.
        /// </summary>
        Farmer,
        /// <summary>
        /// The Forester profession.
        /// </summary>
        Forester,
        /// <summary>
        /// The Jeweller profession.
        /// </summary>
        Jeweller,
        /// <summary>
        /// The Metalsmith profession.
        /// </summary>
        Metalsmith,
        /// <summary>
        /// The Prospector profession.
        /// </summary>
        Prospector,
        /// <summary>
        /// The Scholar profession.
        /// </summary>
        Scholar,
        /// <summary>
        /// The Tailor profession.
        /// </summary>
        Tailor,
        /// <summary>
        /// The Weaponsmith profession.
        /// </summary>
        Weaponsmith,
        /// <summary>
        /// The Woodworker profession.
        /// </summary>
        Woodworker
    }

    /// <summary>
    /// Defines the different locations that maybe a LoTRO characters origin.
    /// </summary>
    public enum LotroOrigin
    {
        /// <summary>
        /// The character origin is unknown.
        /// </summary>
        Unknown,
        /// <summary>
        /// The character originated from Lórien.
        /// </summary>
        Lórien,
        /// <summary>
        /// The character originated from The Lonely Mountain.
        /// </summary>
        [StringValue("The Lonely Mountain")]
        TheLonelyMountain,
        /// <summary>
        /// The character originated from Gondor.
        /// </summary>
        Gondor,
        /// <summary>
        /// The character originated from Fallohide.
        /// </summary>
        Fallohide,
        /// <summary>
        /// The character originated from Mirkwood.
        /// </summary>
        Mirkwood,
        /// <summary>
        /// The character originated from Rohan.
        /// </summary>
        Rohan,
        /// <summary>
        /// The character originated from Bree-land.
        /// </summary>
        [StringValue("Bree-land")]
        Breeland,
        /// <summary>
        /// The character originated from Lindon.
        /// </summary>
        Lindon,
        /// <summary>
        /// The character originated from the Iron Hills.
        /// </summary>
        [StringValue("Iron Hills")]
        IronHills,
        /// <summary>
        /// The character originated from the Grey Mountains.
        /// </summary>
        [StringValue("Grey Mountains")]
        GreyMountains,
        /// <summary>
        /// The character originated from the Blue Mountains.
        /// </summary>
        [StringValue("Blue Mountains")]
        BlueMountains,
        /// <summary>
        /// The character originated from Rivendell.
        /// </summary>
        Rivendell,
        /// <summary>
        /// The character originated from the Dalelands.
        /// </summary>
        [StringValue("Dale-lands")]
        Dalelands,
        /// <summary>
        /// The character originated from Edhellond.
        /// </summary>
        Edhellond,
        /// <summary>
        /// The character originated from Harfoot.
        /// </summary>
        Harfoot,
        /// <summary>
        /// The character originated from Stoor.
        /// </summary>
        Stoor,
        /// <summary>
        /// The character originated from the White Mountains.
        /// </summary>
        [StringValue("White Mountains")]
        WhiteMountains
    }

    /// <summary>
    /// Defines the different statistics associated with a LoTRO character.
    /// </summary>
    public enum LotroStat
    {
        /// <summary>
        /// The Morale stat.
        /// </summary>
        Morale,
        /// <summary>
        /// The Power stat.
        /// </summary>
        Power,
        /// <summary>
        /// The Armour stat.
        /// </summary>
        Armour,
        /// <summary>
        /// The Might stat.
        /// </summary>
        Might,
        /// <summary>
        /// The Agility stat.
        /// </summary>
        Agility,
        /// <summary>
        /// The Vitality stat.
        /// </summary>
        Vitality,
        /// <summary>
        /// The Will stat.
        /// </summary>
        Will,
        /// <summary>
        /// The Fate stat.
        /// </summary>
        Fate,
        /// <summary>
        /// The Radiance stat.
        /// </summary>
        Radiance,
        /// <summary>
        /// The Melee Crit stat.
        /// </summary>
        [StringValue("Melee Crit")]
        MeleeCrit,
        /// <summary>
        /// The Ranged Crit stat.
        /// </summary>
        [StringValue("Ranged Crit")]
        RangedCrit,
        /// <summary>
        /// The Tactical Crit stat.
        /// </summary>
        [StringValue("Tactical Crit")]
        TacticalCrit,
        /// <summary>
        /// The Fear Resistance stat.
        /// </summary>
        [StringValue("Fear Resistance")]
        FearResistance,
        /// <summary>
        /// The Wound Resistance stat.
        /// </summary>
        [StringValue("Wound Resistance")]
        WoundResistance,
        /// <summary>
        /// The Disease Resistance stat.
        /// </summary>
        [StringValue("Disease Resistance")]
        DiseaseResistance,
        /// <summary>
        /// The Poison Resistance stat.
        /// </summary>
        [StringValue("Poison Resistance")]
        PoisonResistance,
        /// <summary>
        /// The Common Defence stat.
        /// </summary>
        [StringValue("Common Defence")]
        CommonDef,
        /// <summary>
        /// The Fire Defence stat.
        /// </summary>
        [StringValue("Fire Defence")]
        FireDef,
        /// <summary>
        /// The Frost Defence stat.
        /// </summary>
        [StringValue("Frost Defence")]
        FrostDef,
        /// <summary>
        /// The Shadow Defence stat.
        /// </summary>
        [StringValue("Shadow Defence")]
        ShadowDef,
        /// <summary>
        /// The Lightning Defence stat.
        /// </summary>
        [StringValue("Lightning Defence")]
        LightningDef,
        /// <summary>
        /// The Acid Defence stat.
        /// </summary>
        [StringValue("Acid Defence")]
        AcidDef,
        /// <summary>
        /// The Block stat.
        /// </summary>
        Block,
        /// <summary>
        /// The Evade stat.
        /// </summary>
        Evade,
        /// <summary>
        /// The Parry stat.
        /// </summary>
        Parry
    }

    /// <summary>
    /// Defines the different item slots that a LoTRO character has.
    /// </summary>
    public enum LotroItemSlot
    {
        /// <summary>
        /// The Head slot.
        /// </summary>
        Head,
        /// <summary>
        /// The Chest slot.
        /// </summary>
        Chest,
        /// <summary>
        /// The Legs slot.
        /// </summary>
        Legs,
        /// <summary>
        /// The Gloves slot.
        /// </summary>
        Gloves,
        /// <summary>
        /// The Boots slot.
        /// </summary>
        Boots,
        /// <summary>
        /// The Shoulder slot.
        /// </summary>
        Shoulder,
        /// <summary>
        /// The Back slot.
        /// </summary>
        Back,
        /// <summary>
        /// The 1st Bracelet slot.
        /// </summary>
        Bracelet1,
        /// <summary>
        /// The 2nd Bracelet slot.
        /// </summary>
        Bracelet2,
        /// <summary>
        /// The Necklace slot.
        /// </summary>
        Necklace,
        /// <summary>
        /// The 1st Ring slot.
        /// </summary>
        Ring1,
        /// <summary>
        /// The 2nd Ring slot.
        /// </summary>
        Ring2,
        /// <summary>
        /// The 1st Earring slot.
        /// </summary>
        Earring1,
        /// <summary>
        /// The 2nd Earring slot.
        /// </summary>
        Earring2,
        /// <summary>
        /// The 1st Pocket slot.
        /// </summary>
        Pocket1,
        /// <summary>
        /// The Primary Weapon slot.
        /// </summary>
        WeaponPrimary,
        /// <summary>
        /// The Secondary Weapon slot.
        /// </summary>
        WeaponSecondary,
        /// <summary>
        /// The Ranged Weapon slot.
        /// </summary>
        WeaponRanged,
        /// <summary>
        /// The Craft Tool slot.
        /// </summary>
        CraftTool,
        /// <summary>
        /// The Last slot.
        /// </summary>
        Last
    }

    /// <summary>
    /// Defines the different themes of LoTRO guild.
    /// </summary>
    public enum LotroGuildTheme
    {
        /// <summary>
        /// The Mixed Kinship guild theme.
        /// </summary>
        [StringValue("Mixed Kinship Theme")]
        MixedKinshipTheme,
        /// <summary>
        /// The Elf Kinship guild theme.
        /// </summary>
        [StringValue("Elf Kinship Theme")]
        ElfKinshipTheme,
        /// <summary>
        /// The Hobbit Kinship guild theme.
        /// </summary>
        [StringValue("Hobbit Kinship Theme")]
        HobbitKinshipTheme,
        /// <summary>
        /// The Dwarf Kinship guild theme.
        /// </summary>
        [StringValue("Dwarf Kinship Theme")]
        DwarfKinshipTheme,
        /// <summary>
        /// The Man Kinship guild theme.
        /// </summary>
        [StringValue("Man Kinship Theme")]
        ManKinshipTheme,
        /// <summary>
        /// The Mixed Tribe guild theme.
        /// </summary>
        [StringValue("Mixed Tribe Theme")]
        MixedTribeTheme,
        /// <summary>
        /// The Ongburz Tribe guild theme.
        /// </summary>
        [StringValue("Ongburz Tribe Theme")]
        OngburzTribeTheme,
        /// <summary>
        /// The Blogmal Tribe guild theme.
        /// </summary>
        [StringValue("Blogmal Tribe Theme")]
        BlogmalTribeTheme,
        /// <summary>
        /// The Tarkrip Tribe guild theme.
        /// </summary>
        [StringValue("Tarkrip Tribe Theme")]
        TarkripTribeTheme
    }

    /// <summary>
    /// Defines the different ranks of a LoTRO guild
    /// </summary>
    public enum LotroGuildRank
    {
        /// <summary>
        /// An unknown guild rank.
        /// </summary>
        Unknown,
        /// <summary>
        /// The Leader guild rank.
        /// </summary>
        Leader,
        /// <summary>
        /// The Officer guild rank.
        /// </summary>
        Officer,
        /// <summary>
        /// The Member guild rank.
        /// </summary>
        Member,
        /// <summary>
        /// The Recruit guild rank.
        /// </summary>
        Recruit
    }

    #region Item Enumerations
    //public enum LotroItemSturdiness
    //{
    //    Normal,
    //    Tough,
    //    Weak,
    //    Brittle,
    //    Substantial
    //}

    //public enum LotroItemBindType
    //{
    //    [StringValue("Bind On Acquire")]
    //    BindOnAcquire,
    //    [StringValue("Bind on Equip")]
    //    BindOnEquip,
    //    [StringValue("Not Bound")]
    //    NotBound
    //}

    //public enum LotroItemType
    //{
    //    [StringValue("Light Armour")]
    //    LightArmour,
    //    [StringValue("Medium Armour")]
    //    MediumArmour,
    //    [StringValue("Heavy Armour")]
    //    HeavyArmour,
    //    Shield,
    //    [StringValue("Heavy Shield")]
    //    HeavyShield,
    //    [StringValue("Warden's Shield")]
    //    WardensShield,
    //    Cloak,
    //    Armband,
    //    Necklace,
    //    Earring,
    //    Ring,
    //    Bauble,
    //    [StringValue("One-handed Sword")]
    //    OnehandedSword,
    //    [StringValue("Two-handed Sword")]
    //    TwohandedSword,
    //    [StringValue("One-handed Axe")]
    //    OnehandedAxe,
    //    [StringValue("Two-handed Axe")]
    //    TwohandedAxe,
    //    [StringValue("Craft Tool")]
    //    CraftTool,
    //    [StringValue("Class Item")]
    //    ClassItem,
    //    [StringValue("One-handed Club")]
    //    OnehandedClub,
    //    Bow,
    //    Crossbow,
    //    Instrument,
    //    Staff,
    //    Spear,
    //    Javelin,
    //    [StringValue("One-handed Mace")]
    //    OnehandedMace,
    //    [StringValue("Instrument(Flute)")]
    //    InstrumentFlute,
    //    Dagger,
    //    [StringValue("One-handed Hammer")]
    //    OnehandedHammer,
    //    [StringValue("Two-handed Hammer")]
    //    TwohandedHammer,
    //    [StringValue("Instrument(Drum)")]
    //    InstrumentDrum,
    //    [StringValue("Rune-stone")]
    //    Runestone,
    //    Halberd,
    //    [StringValue("Instrument(Theorbo)")]
    //    InstrumentTheorbo
    //}

    //public enum LotroItemQuality
    //{
    //    Common,
    //    Uncommon,
    //    Incomparable,
    //    Rare,
    //    Legendary,
    //    Epic
    //}
    #endregion
}
